FIG. 1 illustrates a data processing system having nodes 12a-12c coupled to a storage area network (SAN). The SAN includes a data storage system 20 coupled to nodes 12a-12c via a SAN communication link 24. Lastly, nodes 12a-12c are coupled to each other via local area network (LAN) communication link 26.
Nodes 12a-12c may take form in any one of a number of different types of computer systems. For purposes of explanation, node 12a will take form in a server computer system. Nodes 12b and 12c are clients to node 12a Nodes 12b and 12c, however, may be servers for other functions.
As shown in FIG. 1, node 12 executes an operating system that includes a file system module and a file system driver filter module 30a. Nodes 12b and 12c also execute operating systems. The operating systems of nodes 12b and 2c do not include file system modules. The operating system executing on nodes 12b and 12c include file system driver filter modules 30b and 30c, respectively. Filters 30a-30c are capable of communicating with each other via LAN communication link 26.
File system 30 performs many functions. For example, file system allocates blocks or regions of memory in data storage system 20 in which data of files are stored. File system 30 also creates and maintains file meta data in lookup table (LUT) 34a. The meta data includes information which maps a file name to one or more blocks of memory in storage system 20 which contain data of the file.
Node 12a controls access to data storage system 20. As noted above, nodes 12b and 12c can access files contained within the data storage system 20. For example, application program 36b generates a request to access a file F in data storage system 20. In the prior art, this request is intercepted by the file system driver filter 32b. In response to receiving the request to access file F, file system driver filter 32b access lookup table 34b to determine whether lookup table 34b maps F to meta data needed for accessing the one or more blocks in memory of storage system 20 which contains file F data. If lookup table 34b contains valid meta data for file F, then file F in data storage system 20 is accessed according to the meta data, and information thereof is provided to application 36b via node 12b. 
If, however, LUT 34b does not include valid meta data for file F, file system driver filter 32b generates a request for valid meta data. This request is transmitted to node 12a via LAN communication link 26. File system driver filter 32a of node 12a receives the request for meta data, and in response, file system driver filter 32a accesses LUT 34a to determine whether a valid copy of file F meta data is contained therein. If a valid copy is found, then file system driver filter 32a transmits a response back to file system driver filter 32b via LAN communication link 36. This response includes a valid copy of meta data for file F. File system driver 32b, in turn, stores the received meta data into LUT 34B. Once file system driver filter 32b receives the valid meta data for file F, the request to access file F, generated by application 36b, can be fulfilled.
As noted above, node 12a is capable of accessing files in data storage system 20. For example, application 36a may generate a request to modify (e.g., delete) data contained in file F or file F in its entirety. This request is intercepted by file system driver filter 32a. As noted above, file system 30 manages the allocation of memory in data storage system 20 for files stored therein. This management includes reallocation of memory blocks for files in response to, for example, a request to delete the file generated by application 36a. File system 30, in response to receiving the request to delete a file via file system driver filter 32a, accesses LUT 34a with the filename and modifies the meta data thereof when the file is, for example, deleted from the storage system 20.
One of the problems with the prior art is that a modification of meta data in LUT 34a by file system 30 can result in erroneous access of data by, for example, application 36b. More particularly, should file F stored in system 20 be deleted or perhaps truncated, file system 30 will update the meta data for file F stored in LUT 34a in accordance thereto. However, LUT 34b in node 12b contains what it believes is a valid copy of the meta data for file F which was provided by filter 32a upon a previous request for the meta data. Clearly, the meta data in LUT 34a is different from the meta data in LUT 34b. Subsequently, if application 36b generates a new request to read file F after the meta data in LUT 34a has been modified, the read request may result in accessing erroneous data because of the difference in file F meta data contained in LUTS 34a and 34B.
To avoid this situation, when file system driver filter 32a receives a request to access a file from application 36a which will result in a change in the meta data that identifies the one or more memory blocks that contain the file data, file system driver filter 32a transmits instructions to file system driver filter 32b and file system driver filter 32c, via LAN communication link 26, to invalidate meta data for file F stored in LUTs 34b and 34c. File system driver filters 32b and 32c invalidate the meta data for file F in LUTs 34b and 34c if nodes 12b and 12c are not currently accessing file F. If file F is currently being accessed via nodes 12b and/or 12c, then file system driver filters 32b and 32c will delay the invalidation of the meta data for file F until the access is complete.
Once file system drivers 32b and 32c invalidate the meta data for file F contained in LUTs 34b and 34c, file system drivers 32b and 32c transmit a message back to file system driver filter 32a, via LAN communication link 26, indicating that file F is not being accessed by nodes 12b or 12c and that nodes 12b and 12c have invalidated meta data for file F stored therein. In response, the request to delete file F generated by 36a is subsequently transmitted by file system driver filter 32a to file system 30. File F is depleted from storage 20, and the meta data for file F is updated in LUT 34a. 
The system for maintaining the integrity of meta data for files in nodes 12b and 12c works well so long as file system driver filter 32a receives notification that meta data for a particular file will be changed in LUT 24a before the meta data therein changes. A problem arises when file system 30 directly receives (rather than indirectly receiving via the file system driver filter 32a) an access request which, when fulfilled, results in a modification of meta data that maps a file to one or more memory blocks. For example, file system 30 may receive an input/output (IO) control call to defragment data storage system 20. This call is not received via filter 32a. File system 30 may also self initiate (i.e., without an externally received call) the storage defragmentation process. File system defragmentation of system 20, whether self initiated or initiated in response to an externally received call, when completed may result in a modification in meta data that maps the file to one or more memory blocks.
At any rate, because certain access requests (e.g., I/O call for defragmentation) which do not first pass through file system driver filter 32a and, when completed, result in a modification of meta data in LUT 34a by file system 30, LUTs 34b and 34c may unknowingly store invalid meta data. Requests to access files using invalid meta data will result in a return of erroneous data
Disclosed is a method for supporting coherent multi-node access to file system data. The method can be employed in a network having first and second nodes coupled to each other via a first communication link, and a peripheral data storage device coupled to the first and second nodes via a second communication link. In one embodiment, the method includes generating a request to access data of a file stored in the peripheral data storage device. A file system, executing on the first node, then generates a first message. A first software module, executing on the first node, generates an instruction in response to the file system generating the first message. This instruction is then transmitted to the second node via the first communication link. A portion of meta data stored in memory associated with the second node is invalidated in response to the second node receiving the instruction, wherein the portion of meta data stored in memory associated with the second node corresponds to the file. Thereafter, the first node accesses data of the file via the second communication link. Eventually, the file system modifies meta data stored in memory associated with the first node in response to accessing data in the file, wherein the meta data stored in memory associated with the first node corresponds to the file.